package br.com.werp.regras.mensagem;

import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.GerenciadorErros;
import br.com.werp.regras.geral.Mensagem;
import br.com.werp.regras.mensagem.controle.ControleMensagem;

import java.util.List;


/**
 * @author Sobreira
 * Criado em 24/10/2005
 */
public class MensagemImpl implements Mensagem {
    private static MensagemImpl mensagemImpl;
    private ControleMensagem controleMensagem = new ControleMensagem();

    private MensagemImpl() {
    }

    public static Mensagem getMensagem() {
        if (mensagemImpl == null) {
            mensagemImpl = new MensagemImpl();
        }

        return mensagemImpl;
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Mensagem#enviarMensagem(java.lang.Object, java.util.List)
     */
    public void enviarMensagem(Object from, List Anexos)
        throws ErroPadrao {
        try {
            controleMensagem.enviarMensagem(from, Anexos);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Mensagem#pesqusiarMensagemNova(java.lang.String)
     */
    public List pesqusiarMensagemNova(String usur_login)
        throws ErroPadrao {
        try {
            return controleMensagem.pesqusiarMensagemNova(usur_login);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Mensagem#pesqusiarMensagemNova(java.lang.String)
     */
    public List pesqusiarCaixaSaida(String usur_login, Object form)
        throws ErroPadrao {
        try {
            return controleMensagem.pesqusiarCaixaSaida(usur_login, form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Mensagem#carregarMensagem(java.lang.Object)
     */
    public void lerMensagem(Object form, String usuario, List Anexos)
        throws ErroPadrao {
        try {
            controleMensagem.lerMensagem(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.Mensagem#pesqusiarMensagem(java.lang.Object)
     */
    public List pesqusiarMensagem(Object form) throws ErroPadrao {
        try {
            return controleMensagem.pesqusiarMensagem(form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public List pesquisarMensagensEntrada(String usur_login, Object form)
        throws ErroPadrao {
        try {
            return controleMensagem.pesquisarMensagensEntrada(usur_login, form);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }

    public void verMensagem(Object form, String usuario, List Anexos)
        throws ErroPadrao {
        try {
            controleMensagem.verMensagem(form, usuario);
        } catch (Exception e) {
            throw new ErroPadrao(GerenciadorErros.logarErro(e));
        }
    }
}
